今天預計要來介紹兩支程式,讓編輯登錄檔稍微安全的組策略編輯器(gpedit.msc)跟監控系統大小變化的Process Monitor,這是筆者這幾天研究登錄檔常常跳出來的關鍵字,其實也是好用的工具。
這要先談到什麼是組策略,又稱群組原則(Group Policy),它可以控制使用者帳戶和電腦帳戶的工作環境,同時可以集中化管理和組態,簡單來說就是一些登錄檔設定集合,用自然語言描述意義然後把它們框成一個個子設定,對使用者友善,而這個gpedit.msc就是Group Policy Editor,這些是Windows內建的一個提供GUI介面群編輯這些組策略的軟體,他提供的配置內容大多數都是安全的,通常Win+R輸入gpedit.msc就可以執行了,但是後來微軟只他在Windows專業版的系統安裝,家用版搜尋會找不到。
其實後來會發現這些稍微特別專業點的工具,家用版好像都少了一些,於是網路上也流傳許多如何在家用版上安裝這些東東的作法,以Windows 10為例,通常我們會查到這段文本,叫你存成.bat或.cmd用系統管理員執行。
@echo off
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
pause
這段指令各大網站查都一樣所以還算可以信任,這邊簡單說明一下就是用Dir指令去把兩個檔案的路徑暫存到List.txt,然後以Dism指令去路徑上安裝兩個package,所以執行完出現的List.txt也可以刪除。
在文末的參考網站中也有寫到許多其他的方法,甚至是對Windows11也有人給出解法並向下相容Win10,筆者最後也是使用這個方法,他在參考資料的第三個網站中。各種方法因應不同系統不一定有用,使用前可以先建立系統還原點,安裝完重啟系統比較好。
於是Win+R輸入gpedit.msc他就出現了
如果最後還是不行大家也可以去找Policy Plus,他是第三方應用可以取代組策略編輯器的工具,而且還具有搜索功能,是一個替代方案。
所以gpedit.msc這個工具讓我們不用手動編輯某些登錄檔,我們可以看到他主要分為電腦設定和使用者設定兩大項,類似我們一開始說的HKEY_LOCAL_MACHINE
和HKEY_USERS
兩大主鍵。舉例來說,上次設定的Windows歡迎頁面文字就可以在這裡找到設定。
也有解說頁面可以參考
總之這是一個容易上手的工具,大家有空可以玩玩看,但當我們編輯完後你可能會很疑惑,所以我的登錄檔究竟改了哪一條,這時候後我們可以用另一個微軟官網上的工具-Process Monitor,來監測登錄檔的時時刻刻的變化。
正如其名,他是監控程序的程式,是結合過去SysInternals開發的File Monitor(FileMon)跟Registry Monitor(RegMon)兩套軟體開發而成的(他們一個監測檔案讀寫,一個監測登錄檔讀寫)。
根據維基百科我們得知,Process Monitor可以監視並記錄針對Windows登錄檔的所有操作,可檢測讀取和寫入登錄檔項的失敗嘗試。它還允許過濾特定的鍵、程序ID和值等等,也可以看出應用程序如何使用文件和DLL,檢測系統文件中的一些嚴重錯誤等等。
我們可以到這裡下載:
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
打開後的大概長這樣,首先第一件事是那排ToolBar從左至右數來第三個捕捉框的圖示,是啟用捕捉監控的意思,上圖那樣亮著代表開啟,會一直捕捉事件,可以先按一下把它關掉以免不自覺間占用大量虛擬記憶體(記憶體分頁)。
按下紅色垃圾桶(第五個按鈕)會清除下面的事件紀錄。
按第四個按鈕會自動下卷顯示最新資料。
最後五個按鈕可以決定要顯示的事件類別有哪些。
最下方狀態列會顯示目前捕捉的事件數。
這時候你會發現無時無刻的大量事件讓你頭昏眼花,所以這個程序的精華在使用filtere過濾器(那個漏斗圖案),他會過濾顯示的內容(但還是全部捕捉)。
他的設定條件是類似一句句的陳述式,上面的Architecture是條件要指定的欄位,is式條件的運算子,第三個欄位是要篩選的特定字串值,最後include可以選擇要不要反向選取,選完後按下Add才會加入下方的篩選條件。
舉個例子,如果我們想看鎖定工作列會修改什麼登錄檔,可以設定一個filter條件為Operation-is-RegSetValue-include和Process Name-is-Explorer.exe-include,把他們都Add進入篩選條件如下圖。
接著啟用捕捉,去鎖定工作列再停止捕捉
大概會看到這個畫面
從path你發現應該是TaskbarSizeMove
這項登錄值,所以雙擊最後一項事件。
從詳細資料的event來看我們可以瞭解剛剛更動的登錄檔的位置、屬性跟改寫成什麼值,隔壁切入process分頁可以看到操作這個登錄的程式的詳細資料,有時候也可以從這裡找出是不是有病毒在改寫登錄檔。
總之,你會發現Process Monitor可以說是專業開發人員在偵錯的常用工具,有空沒事都可以載來玩玩看,捕捉紀錄時不要開太久小心虛擬記憶體塞滿就好,否則這沒什麼危險性,搭配前面的gpedit.msc服用也是不錯的選擇,今天就講到這裡,下篇用筆者先前略提的WiseRegCleaner,我們來研究看看什麼登錄檔屬於無用登錄檔可以刪除。
參考資料:
https://zh.wikipedia.org/wiki/%E7%BB%84%E7%AD%96%E7%95%A5
https://www.itechtics.com/enable-gpedit-windows-10-home/
https://www.itechtics.com/enable-gpedit-msc-windows-11/
https://blog.timshan.idv.tw/2018/10/how-to-windows10-gpeditmsc.html
https://en.wikipedia.org/wiki/Process_Monitor
https://adamtheautomator.com/procmon/